/**
 * 安保管理API接口
 * 严格按照《App端编码规范权威标准声明.md》API规范实现
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */

import { request } from '@/utils/request'

// ========================= 类型定义 =========================

/**
 * 安保路线查询参数
 */
export interface SecurityRouteQueryParams {
  pageNum?: number
  pageSize?: number
  routeName?: string
  routeType?: string
  status?: number
}

/**
 * 安保路线信息
 */
export interface SecurityRouteInfo {
  id: number
  routeName: string
  routeType: string
  routeTypeDesc: string
  description: string
  checkpoints: string
  frequency: string
  frequencyDesc: string
  durationMinutes: number
  communityId: number
  communityName: string
  status: number
  statusDesc: string
  createTime: string
  updateTime: string
  createBy: number
  createByName: string
  updateBy: number
  updateByName: string
}

/**
 * 分页响应数据
 */
export interface SecurityRoutePageResponse {
  records: SecurityRouteInfo[]
  total: number
  current: number
  size: number
  pages: number
}

// ========================= API接口 =========================

/**
 * 分页查询安保路线列表
 * 支持基于数据权限的社区过滤
 * 
 * @param params 查询参数
 * @returns 安保路线分页数据
 */
export function getSecurityRoutePage(params: SecurityRouteQueryParams = {}) {
  return request<SecurityRoutePageResponse>({
    url: '/api/work/security/route/page',
    method: 'GET',
    params: {
      pageNum: 1,
      pageSize: 10,
      ...params
    }
  })
}

/**
 * 根据ID查询安保路线详情
 * 
 * @param id 路线ID
 * @returns 路线详情
 */
export function getSecurityRouteById(id: number) {
  return request<SecurityRouteInfo>({
    url: `/api/work/security/route/${id}`,
    method: 'GET'
  })
}

/**
 * 创建安保路线
 * 
 * @param data 路线数据
 * @returns 创建结果
 */
export function createSecurityRoute(data: Partial<SecurityRouteInfo>) {
  return request<number>({
    url: '/api/work/security/route',
    method: 'POST',
    data
  })
}

/**
 * 更新安保路线
 * 
 * @param id 路线ID
 * @param data 路线数据
 * @returns 更新结果
 */
export function updateSecurityRoute(id: number, data: Partial<SecurityRouteInfo>) {
  return request<boolean>({
    url: `/api/work/security/route/${id}`,
    method: 'PUT',
    data
  })
}

/**
 * 删除安保路线
 * 
 * @param id 路线ID
 * @returns 删除结果
 */
export function deleteSecurityRoute(id: number) {
  return request<boolean>({
    url: `/api/work/security/route/${id}`,
    method: 'DELETE'
  })
}

/**
 * 更新安保路线状态
 * 
 * @param id 路线ID
 * @param status 状态
 * @returns 更新结果
 */
export function updateSecurityRouteStatus(id: number, status: number) {
  return request<boolean>({
    url: `/api/work/security/route/${id}/status`,
    method: 'PUT',
    data: { status }
  })
}
